package com.dlc.shop.jky.common.foreign.service;

import com.dlc.shop.bean.app.param.ShopAuditingParam;
import com.dlc.shop.bean.dto.BrandSigningDTO;
import com.dlc.shop.bean.dto.ShopCreateInfoDTO;
import com.dlc.shop.bean.dto.ShopSigningInfoDTO;
import com.dlc.shop.bean.model.CategoryShop;
import com.dlc.shop.bean.model.OfflineHandleEvent;
import com.dlc.shop.bean.model.ShopCompany;
import com.dlc.shop.bean.model.ShopDetail;
import com.dlc.shop.bean.param.OfflineHandleEventAuditParam;
import io.swagger.v3.oas.annotations.Operation;

import java.util.List;

public interface ForeignShopService {

    /**
     * 添加店铺信息
     * @param shopId
     * @return
     */
    String shopCreateInfo(Long shopId);

    /**
     * 审核店铺信息
     * @param shopAuditingParam
     */
    String audit(ShopAuditingParam shopAuditingParam);

    /**
     * 平台自己创建 商户
     * @param shopCreateInfo
     */
    String shopPlatformCreateInfo(ShopCreateInfoDTO shopCreateInfo);

    /**
     * 店铺下线
     * @param offlineHandleEvent
     */
    String offline(OfflineHandleEvent offlineHandleEvent);

    /**
     * 审核店铺上线
     * @param offlineHandleEventAuditParam
     * @return
     */
    String auditShop(OfflineHandleEventAuditParam offlineHandleEventAuditParam);

    /**
     * 店铺违规下线，平台直接上线店铺
     * @param offlineHandleEventAuditParam
     * @return
     */
    String onlineOpenShop(OfflineHandleEventAuditParam offlineHandleEventAuditParam);

    /**
     *  @Operation(summary = "违规店铺重新提交审核", description = "违规店铺重新提交审核")
     * @param offlineHandleEventAuditParam
     */
    String auditApply(OfflineHandleEventAuditParam offlineHandleEventAuditParam);

    /**
     * 编辑店铺基本信息
     * @param shopDetail
     */
    String editShop(ShopDetail shopDetail);

    /**
     * @Operation(summary = "更新店铺签约信息", description = "更新店铺签约信息")
     * @param shopSigningInfoDTO
     * @return
     */
    String updateSigningInfo(ShopSigningInfoDTO shopSigningInfoDTO);

    /**
     * 平台端 修改工商信息
     * @param shopCompany
     */
    String editShopCompany(ShopCompany shopCompany);

    /**
     * 商家端 增加分类信息
     * @param categoryShopList
     * @return
     */
    String addSigningCategory(List<CategoryShop> categoryShopList);

    /**
     *  商家端  @Operation(summary = "根据分类id删除签约分类" , description = "根据分类id删除签约分类")
     * @param shopId
     * @param categoryId
     */
    String deleteSigningCategory(Long shopId, Long categoryId);

    /**
     *     @Operation(summary = "增加签约品牌" , description = "增加签约品牌")
     * @param brandSigningDTO
     */
    String addSigningBrand(BrandSigningDTO brandSigningDTO);

    /**
     *     @Operation(summary = "根据签约品牌Id删除签约品牌" , description = "根据签约品牌Id删除签约品牌")
     * @param brandShopId
     * @return
     */
    String deleteSigningBrand(Long brandShopId);

    /**
     * 更改扣率
     * @param categoryShopId
     * @param rate
     */
    String updateCategoryRate(Long categoryShopId, Double rate);

    /**
     *     @Operation(summary = "更新自定义扣率" , description = "更新自定义扣率")
     * @param shopId
     * @param categoryId
     * @param rate
     */
    String updateRate(Long shopId, Long categoryId, Double rate);
}
